//package com.lk.service;
//
//import io.netty.bootstrap.ServerBootstrap;
//import io.netty.buffer.PooledByteBufAllocator;
//import io.netty.channel.ChannelOption;
//import io.netty.channel.EventLoopGroup;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.nio.NioServerSocketChannel;
//import org.springframework.stereotype.Service;
//
//import java.util.concurrent.ThreadFactory;
//
///**
// * TODO:必须加入类功能描述
// *
// * @author 薄一鸣
// * @date 2024/4/17 13:14
// * @version V1.0
// * @Copyright GUANGHUA-CA
// */
//
//@Service
//public class Proxy {
//
//
//    public void start() {
//
//        // 创建自定义的线程工厂，设置线程优先级为最高
//        ThreadFactory bossThreadFactory = new ThreadFactory() {
//            @Override
//            public Thread newThread(Runnable r) {
//                Thread t = new Thread(r);
//                t.setPriority(Thread.MAX_PRIORITY);
//                return t;
//            }
//        };
//
//        // 创建自定义的线程工厂，设置线程优先级为最高
//        ThreadFactory workerThreadFactory = new ThreadFactory() {
//            @Override
//            public Thread newThread(Runnable r) {
//                Thread t = new Thread(r);
//                t.setPriority(Thread.MAX_PRIORITY - 2);
//                return t;
//            }
//        };
//
//        EventLoopGroup bossGroup = new NioEventLoopGroup(bossThreadFactory);
//        EventLoopGroup workerGroup = new NioEventLoopGroup(workerThreadFactory);
//
//        ServerBootstrap b = new ServerBootstrap();
//        b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
//                .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)
//                // .handler(new LoggingHandler(LogLevel.ERROR))
//                .childHandler(
//                        new DBProxyInitializer(proxyPort,remoteHost, remotePort, remoteEncoder, remoteType, responseMsg, parm))
//                .childOption(ChannelOption.AUTO_READ, false)
//                .childOption(ChannelOption.SO_BACKLOG, 65535)
//                .childOption(ChannelOption.TCP_NODELAY, true)
//                .option(ChannelOption.TCP_NODELAY, true);
//
//
//        try {
//            b.bind(3001).sync();
//        } catch (InterruptedException e) {
//            throw new RuntimeException(e);
//        }
//    }
//}
